/* 
 * File:   RapidStopper.h
 * Author: dell
 *
 * Created on 2012年4月5日, 下午6:46
 */

#ifndef RAPIDSTOPPER_H
#define	RAPIDSTOPPER_H

#include "common.h"
#include <string>
#include "ServerPid.h"

namespace Rapid{
    class RapidStopper {
    public:
        RapidStopper(const char* homeDir, int port);
        virtual ~RapidStopper();
        
        /** 停止所有正在运行的服务 */
        static int stopAll(const char* homeDir);
        
        static int killAll(const char* homeDir);
        
        /** 通知停止服务 */
        bool notifyStop();
        
        /** 直接杀掉 */
        bool killServer();
        
//        /** 检查是否已经停止服务 */
//        bool stopped();
        
//        /** 直接kill掉 */
//        bool kill();
        
        /** 移除server_xxxx.pid文件 */
        bool removeFile();
        
        int getPort(){
            return port;
        }
        
        pid_t getPid(){
            return pid;   
        }
        
    private:
        //从文件中读进程ID
        bool readPid();
        
        static int stopAll(const char* homeDir, bool kill);
        
    private:
        ServerPid serverPid;
        std::string homeDir;
        int port;
        pid_t pid;
    };
}
#endif	/* RAPIDSTOPPER_H */

